A variety of different types of computing devices have become commonly available, such as desktop computers, wireless phones, game consoles, and so forth. Application developers often times desire to have their applications run on multiple ones of these different types of devices, allowing many more users to run these applications. However, this oftentimes requires application developers to duplicate a substantial part of their effort as they write and maintain a different version of their applications for each of these different types of devices. This can be problematic as it increases the cost and time incurred by the application developers in writing and maintaining the numerous different versions of their applications. At the same time, the application developers want to avoid a “least common denominator solution” that limits the experience of an application on some devices due to limitations on other devices.